<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // 1.理解: 键:不属于正式引用,会被垃圾回收
    //        值:属于正式引用,只要键存在,就不会被垃圾回收

    // 2.举例1
    /*
        说明:当执行完代码后,键会被回收,值没有被引用,键值对被破坏后,值也成了垃圾回收的目标
     */
    const wm = new WeakMap()
    wm.set({}, 'val')

    // 3.举例2
    /*
    这一次，container 对象维护着一个对弱映射键的引用，因此这个对象键不会成为垃圾回收的目标。
    不过，如果调用了 removeReference()，就会摧毁键对象的最后一个引用，垃圾回收程序就可以 把这个键/值对清理掉。
     */
    const wm2 = new WeakMap();
    const container = {
        key: {}
    };
    wm2.set(container.key, "val");

    function removeReference() {
        container.key = null;
    }

    // 4.WeakMap不可以迭代



</script>
</body>
</html>